<?php

/**
 * Содержит набор типовых полей для формы.
 * 
 * @author nrnwest@gmail.com
 * 
 * 
 * 
 * 
 */
class Arm_Form_Fields
{

    /**
     * Вернет элемент формы text с именем email и
     * соотвествующими
     * валидаторами, и фильтрами.
     * 
     * @return Zend_Form_Element_Text
     */
    public function email()
    {
        $email = new Zend_Form_Element_Text('email');
        $email->setLabel(Arm_Translate::_('Ваш email'));
        $email->addValidator(new Zend_Validate_EmailAddress());
        $email->addFilter(new Arm_Filter_StringToLower());
        $email->setRequired(true);
        return $email;
    }

    /**
     * Каптча на основе рисунка.
     * 
     * @return Zend_Form_Element_Captcha
     */
    public function captcha()
    {
        $params  = array(
        'label'=> Arm_Translate::_('Ведите код'),
        'description' => Arm_Translate::_('Ведите код с изображения'),
        'captcha'=>'Image',
        'captchaOptions' => array(
                'captcha'=>'Image',
                'ImgDir' => Arm_Core::getPathPublicHtml () . 'captcha',
                'ImgUrl' => '/captcha',
                'wordLen' => 5, 
                'timeout' => 300, 
                'width' => 150, 
                'Height' => 50, 
                'font' => Arm_Core::getPathLibrary () . 'Arm/_fonts/comicbd.ttf',
                'useNumbers'=>true,
                'fsize' =>12
            )
        );
        $captcha = new Zend_Form_Element_Captcha('arm_captcha', $params);
        return $captcha;
    }
    
    
    
    /**
     * Кнопка submit.
     * 
     * @param string|null $label значения кнопки
     * @param string|null $name имя кнопки
     * @param string|null $confirmText текст для вывода в окне подтверждения отправки данных
     * @return Zend_Form_Element_Submit
     */
    public function submit($label=null, $name=null,   $confirmText = null)
    {
          if($name === null) {
              $name = 'submit';
          }
       $submit = new Zend_Form_Element_Submit($name);
       $submit->setValue($name);
           if($label === null) {
               $label = Arm_Translate::_('Отправить');
           }
           if($confirmText !== null) {
               $submit->setOptions(array('onClick'=>'return confirm(\'' . $confirmText . '\')'));
           }
       $submit->setLabel($label);
       return $submit;
    }
    
    /**
     * Поле textarea с установленным фильтром вырезающим теги html, php.
     * Поле обязательное.
     * 
     * @param string $name
     * @param int $rows
     * @param int $cols
     * @return Zend_Form_Element_Textarea
     */
    public function bodyNoTags($name=null, $rows=20, $cols=120) 
    {
        
        if($name === null) {
            $name = 'body';
        }
        $text = new Zend_Form_Element_Textarea($name);
        $text->setAttribs(array('rows'=>$rows, 'cols'=>$cols));
        $text->addFilter(new Zend_Filter_StripTags());
        $text->setLabel(Arm_Translate::_('Текст'));
        $text->setRequired(true);
        return $text;
    }
    
    /**
     * Вернет элемент формы Textarea с редактором fckEditor,
     * конфиг редактора разрешает любые теги, плсю php вставки.
     * 
     * @param string|null $name
     * @return Arm_Form_Element_FckEditor
     */
    public function fckEditorAllowPhp($name=null)
    {
        if($name === null) {
            $name = 'body';
        }
        $editor = new Arm_Form_Element_FckEditor($name);
        $editor->setLabel(Arm_Translate::_('Текст'));
        $editor->setDescription(Arm_Translate::_('Разрешены вставки PHP кода, любые HTML теги'));
        $editor->setConfigEditor(Arm_Form_Element_FckEditor::FULLPHP_CONFIG);
        return $editor;
    }
    
    /**
     * Вернет элемент формы Textarea с редактором fckEditor,
     * полная версия, для html
     * 
     * @param string|null $name
     * @return Arm_Form_Element_FckEditor
     */
    public function fckEditorFull($name=null)
    {
        if($name === null) {
            $name = 'body';
        }
        $editor = new Arm_Form_Element_FckEditor($name);
        $editor->setLabel(Arm_Translate::_('Текст'));
        $editor->setDescription(Arm_Translate::_('Разрешены HTML теги'));
        $editor->setConfigEditor(Arm_Form_Element_FckEditor::FULL_CONFIG);
        return $editor;
    }
    
    /**
     * Вернет элемент формы Textarea с редактором fckEditor,
     * минимальная версия.
     * 
     * @param string|null $name
     * @return Arm_Form_Element_FckEditor
     */
    public function fckEditorMinimal($name=null)
    {
        if($name === null) {
            $name = 'body';
        }
        $editor = new Arm_Form_Element_FckEditor($name);
        $editor->setLabel(Arm_Translate::_('Текст'));
        $editor->setConfigEditor(Arm_Form_Element_FckEditor::MINI_CONFIG);
        return $editor;
    }

    /**
     * Возвращает элемент формы Zend_Form_Element_Select с
     * выбором - да | нет.
     *        
     *        
     * @return Zend_Form_Element_Select
     */
    public function onOffSelect($name=null)
    {
        if($name===null) {
            $name = 'onOff';
        }
        $lists = array(
                        '1'=>Arm_Translate::_('Да'),
                        '0'=>Arm_Translate::_('Нет'),
                       );
        
        $navigationVisible = new Zend_Form_Element_Select($name);
        $navigationVisible->setLabel(Arm_Translate::_('Включить'));
        $navigationVisible->setMultiOptions($lists);
        $navigationVisible->setValue('1');
        $navigationVisible->setRequired(true);
        return $navigationVisible;
    }

}

